<?php
	/** sous fonctionnalité de gestion des joueurs d'un matche
	 * @author Sebastian Mosser
	 */

class sfManageMedias extends aSubFeature {


	public function __construct() {
		  $this->_acl = new AccessControlList(); 
      $this->_acl->setGranted(1, AccessControlList::$JUST_ME); // Entraineur
      $this->_acl->setGranted(3); // Secretariat
      $this->_acl->setGranted(7); // Administrateur système
		}


	public function check($teamId) {
	
		$perm = $this->_acl->isExposable(Login::getGroups());
		$aTeam = Team::read($teamId);
		
		if ($perm == AccessControlList::$JUST_ME) {
			if (! $aTeam->canEdit(Login::getLoginId())) {
				$page = <<<EOS
<h1> Une erreur est survenue ! </h1>
<div align="center">
<p> <span class="error">Vous n'êtes pas autorisé a faire des modifications dans cette équipe car vous n'en êtes pas l'administrateur.</span></p>
</div>
<p> Si vous pensez qu'il s'agit d'une erreur, contactez le secrétariat du club qui pourra vous autoriser à y acceder.</p>
<p> Pour pouvoir modifier une équipe, vous devez être déclaré : 
<ul>
  <li> Administrateur de l'équipe </li>
  <li> Administrateur de catégorie </li>
  <li> Membre du groupe <code> Secretariat </li>
  <li> Membre du groupe <code> Administrateur Système </code> </li>
</ul>
EOS;
				return $page;
			}
		}
		return True;
	}

	protected function run() {
		
		$id = PropRetriever::getProp($_POST,"id");
		if ($id == "")
			$id = PropRetriever::getProp($_GET,"id");
		
		try {
			$aMatche = Matche::read($id);
			$teamId = $aMatche->getTeamId();
		}
		catch(Exception $e) {
			$ans  = "<h1> Une erreur est survenue ! </h1>";
			$ans .= "<div align=\"center\"> <span class=\"error\">";
			$ans .= "Le match demandé n'existe pas !";
			$ans .= "</span></div>";
			return $ans;
		}
		
		$c = $this->check($teamId);
		if ($c === True)
			return $this->process($aMatche,$id);
		else
			return $c;
	}
	
	// $aMatche est une instance de Matche, mais pas une rèf.
	private function process($aMatche,$id) {
		$action = PropRetriever::getProp($_POST,"action");
		if ($action == "load")
			return $this->loadPicture($aMatche, $id);
		else if ($action == "del")
			return $this->delPicture($aMatche, $id);
		else if ($action == "loadMovie")
			return $this->loadMovie($aMatche, $id);
		else if ($action == "delMovie")
			return $this->delMovie($aMatche, $id);
		else
			return $this->displayform($aMatche,$id);
	}
	
	private function loadMovie($aMatche, $id) {
		$upFile = new UploadedFile("movie");
		$check = $upFile->checkFile();
		if ($check !== True)
			return $this->displayForm($aMatche, $id,$check);
		$aMatche->unloadMovie();
		$test = $aMatche->loadMovie($upFile);
		if ($test === False)
			return $this->displayForm($aMatche,$id,
											"Un fichier ayant le même nom existe sur le serveur !");
		$aMatche->update();
		return $this->displayForm($aMatche, $id, 
															"Chargement vidéo effectué avec succès");
	}
	
	private function delMovie($aMatche, $id) {
		$aMatche->unloadMovie();
		$aMatche->update();
		return $this->displayForm($aMatche, $id, 
															"Suppression vidéo effectué avec succès");
	}
	
	private function delPicture($aMatche,$id) {
		$picId = PropRetriever::getProp($_POST,"rank");
		$aMatche->unloadPicture($picId);
		$aMatche->update();
		return $this->displayForm($aMatche, $id, 
															"Suppression effectué avec succès");
	}
	
	// $aMatche est une instance de matche 
	private function loadPicture($aMatche, $id) {
		
		$picId = PropRetriever::getProp($_POST,"rank");
		$upFile = new UploadedFile("picture");
		$check = $upFile->checkFile();
		if ($check !== True)
			return $this->displayForm($aMatche,$id,$check);
		
		$tmpFile = $upFile->getTempName();
		$aMatche->unloadPicture($picId);
		if ( ! $aMatche->loadPicture($picId,$tmpFile))
			return $this->displayForm($aMatche, $id,
																"Impossible de manipuler l'image chargée !");
		else {
			$aMatche->update();
			return $this->displayForm($aMatche,$id,"Chargement effectué avec succès");
		}
	}
	
	private function displayForm($aMatche,$id,$text = "") {
		$matcheResume = $aMatche->displayShort();
			
		$resultAction = "";
		if ($text != "") {
			$resultAction = "<h2> Résultat de l'action demandée </h2>";
			$resultAction .= "<div align=\"center\"><span class=\"error\">";
			$resultAction .= $text;
			$resultAction .= "</span></div>";
		}
		
		$returnButton = sfManageAMatche::getReturnButton($id);
		
		$display = array();
		for ($i = 1; $i < 6; $i++)
			$display[$i] = $aMatche->getPicture($i);
		$movie = $aMatche->getMovieUrl();
		if ($movie == False) 
			$movie = "<em> Pas de vidéo ... </em>";
		else {
			$movie = "<a href=\"".$movie."\" target=\"_blank\">";
			$movie .= "Télécharger la vidéo </a>";
		}
		$maxFileSize = MAX_FILE_SIZE;
		$page = <<<EOS
${matcheResume}
<br />
${returnButton}
<h1> Remarques Importantes </h1>
<p> Vous pouvez charger jusqu'à <strong> 5 photos haute résolution </strong> et <strong> 1 vidéo </strong> dans le système. Ces médias seront publiées automatiquement sur le site internet public, dès que la mise a jour automatique se sera effectuée. </p>
<p> <strong> Remarque : </strong>
<ul> 
	<li> Vos fichiers ne <span class="error"> doivent pas dépasser 20 Mégas</span>. La connexion exterieure étant cryptée, charger de gros fichiers depuis l'exterieur peut provoquer une erreur de dépassement de délai de traitement. Si tel est le cas, effectuez le chargement depuis une des machines du club.</li>
	<li> Les images doivent être au format <code>JPG</code>, <code>PNG</code> ou <code>GIF</code>. Elles seront automatiquement retaillée par le système pour une dimension de <strong>1024x768</strong>. 
	</li>
	<li>Les informations de <strong>copyright</strong> nécéssaire a la protection juridique du club seront ajoutée automatiquement par Balloon en bas a droite de votre image. </li></p>

${resultAction}
<br />
<div align="center">
<table class="resultset">
<tr>
<th colspan="2"> Photos </th>
</tr>
<tr>
	<td id="1">
		<fieldset>
			<legend> Image #1 </legend>
			<form method="post" enctype="multipart/form-data" action="#1">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="picture" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="load" />
				<input type="hidden" name="rank" value="1" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#1">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="del" />
				<input type="hidden" name="rank" value="1" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${display[1]}
	</td>
</tr>

<tr>
	<td id="2">
		<fieldset>
			<legend> Image #2 </legend>
			<form method="post" enctype="multipart/form-data" action="#2">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="picture" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="load" />
				<input type="hidden" name="rank" value="2" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#2">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="del" />
				<input type="hidden" name="rank" value="2" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${display[2]}
	</td>
</tr>

<tr>
	<td id="3">
		<fieldset>
			<legend> Image #3 </legend>
			<form method="post" enctype="multipart/form-data" action="#3">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="picture" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="load" />
				<input type="hidden" name="rank" value="3" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#3">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="del" />
				<input type="hidden" name="rank" value="3" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${display[3]}
	</td>
</tr>

<tr>
	<td id="4">
		<fieldset>
			<legend> Image #4 </legend>
			<form method="post" enctype="multipart/form-data" action="#4">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="picture" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="load" />
				<input type="hidden" name="rank" value="4" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#4">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="del" />
				<input type="hidden" name="rank" value="4" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${display[4]}
	</td>
</tr>

<!-- PHOTO #1 -->
<tr>
	<td id="5">
		<fieldset>
			<legend> Image #5 </legend>
			<form method="post" enctype="multipart/form-data" action="#5">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="picture" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="load" />
				<input type="hidden" name="rank" value="5" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#5">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="del" />
				<input type="hidden" name="rank" value="5" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${display[5]}
	</td>
</tr>
<tr>
<th colspan="2"> Vidéo </th>
</tr>
<tr>
	<td id="movie">
		<fieldset>
			<legend> Vidéo du Match</legend>
			<form method="post" enctype="multipart/form-data" action="#movie">
				<input type="hidden" name="MAX_FILE_SIZE" value="${maxFileSize}" />
				<label> 
				<input type="file" name="movie" class="button" class="edit" />
				&nbsp; &nbsp;
				</label>
				<br />
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="loadMovie" />
				<input type="submit" value="Charger" class="edit" />
			</form>
			&nbsp;&nbsp;&nbsp;&nbsp;
			<form method="post" action="#movie">
				<input type="hidden" name="id" value="${id}" />
				<input type="hidden" name="action" value="delMovie" />
				<input type="submit" value="Supprimer" class="edit" />
			</form>
			<br /> 
		</fieldset>
	</td>
	<td align="center">
		${movie}
	</td>
</tr>
</table>
</div>
EOS;
		return $page;
	
	}
	
	
}

?>